﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;


namespace WAVEZ
{
    class Nivel_Teste : SceneBase
    {
        Personagem personagem;
        Camera3D camera;

        Objeto3D paredeUp, paredeDown, paredeR, paredeL;

        public override void start()
        {
            camera = new Camera3D(Game1.Self.GraphicsDevice);
            camera.position.X = 0;
            camera.position.Y = 90;
            camera.position.Z = 50;

            camera.lookAt = new Vector3(0, 0, 0);

            //Criação do personagem
            personagem = new Personagem(Game1.Self.Content.Load<Model>("personagem"));
            personagem.posicao.Y = -35;

            paredeUp = new Objeto3D(Game1.Self.Content.Load<Model>("personagem"));
            paredeUp.posicao.Y = -27;
            paredeUp.posicao.Z = -45;
            paredeUp.escala.Z = 0.4f;
            paredeUp.escala.Y = 5;
            paredeUp.escala.X = 50;

            paredeDown = new Objeto3D(Game1.Self.Content.Load<Model>("personagem"));
            paredeDown.posicao.Y = -27;
            paredeDown.posicao.Z = 9;
            paredeDown.escala.Z = 0.4f;
            paredeDown.escala.Y = 5;
            paredeDown.escala.X = 50;

            paredeR = new Objeto3D(Game1.Self.Content.Load<Model>("personagem"));
            paredeR.posicao.Y = -27;
            paredeR.posicao.Z = 0;
            paredeR.posicao.X = 40;
            paredeR.escala.Z = 50f;
            paredeR.escala.Y = 5;
            paredeR.escala.X = 0.4f;

            paredeL = new Objeto3D(Game1.Self.Content.Load<Model>("personagem"));
            paredeL.posicao.Y = -27;
            paredeL.posicao.Z = 0;
            paredeL.posicao.X = -40;
            paredeL.escala.Z = 50f;
            paredeL.escala.Y = 5;
            paredeL.escala.X = 0.4f;
        }

        public override void update(GameTime gameTime)
        {
            personagem.Update(gameTime);

            if (paredeUp.hitTestObject(personagem))
            {
                if (personagem.velocidade.Z < 0)
                {
                    personagem.velocidade.Z = 0;
                }
            }

            if (paredeDown.hitTestObject(personagem))
            {
                if (personagem.velocidade.Z > 0)
                {
                    personagem.velocidade.Z = 0;
                }
            }

            if (paredeR.hitTestObject(personagem))
            {
                if (personagem.velocidade.X > 0)
                {
                    personagem.velocidade.X = 0;
                }
            }

            if (paredeL.hitTestObject(personagem))
            {
                if (personagem.velocidade.X < 0)
                {
                    personagem.velocidade.X = 0;
                }
            }
        }

        public override void draw(SpriteBatch spriteBatch)
        {
            Game1.Self.GraphicsDevice.Clear(Color.CornflowerBlue);

            paredeR.Draw(camera, Game1.Self.GraphicsDevice);
            paredeL.Draw(camera, Game1.Self.GraphicsDevice);
            paredeUp.Draw(camera, Game1.Self.GraphicsDevice);

            personagem.Draw(camera, Game1.Self.GraphicsDevice);

            paredeDown.Draw(camera, Game1.Self.GraphicsDevice);
            
        }

        public override void terminate()
        {

        }
    }
}